/**
 * 关于前端请求的axios封装
 */
import axios from "axios";
// 引入element-ui的消息封装
import {Message} from "element-ui";
import router from "../router";

axios.interceptors.request.use(config=>{
    if (window.sessionStorage.getItem("tokenStr")){
        config.headers['Authorization'] = window.sessionStorage.getItem("tokenStr");
    }
    return config;
},error=>{
    console.log(error);
})


// 定制axios的拦截器
axios.interceptors.response.use(success=>{
    // 业务逻辑错误，判断Http响应
    if (success.status && success.status == 200){
        // 判断响应体中的响应码
        if (success.data.code == 500 || success.data.code == 403){
            Message.error({
                message: success.data.message
            });
            // 返回null，不返回响应体
            return;
        }
        // 判断响应体中是否有信息，有信息，就代表请求成功
        if (success.data.message){
            Message.success({
                message: success.data.message
            });
        }
        // 返回响应的数据，交给调用者做后续的处理
        return success.data;
    }
},error => {
    if (error.response.code == 504 || error.response.code == 404){
        Message.error({
            message: '服务器走丢了( ╯□╰ )'
        });
    } else if (error.response.code == 403){
        Message.error({
            message: '权限不足，请联系管理员',
        });
    }else if (error.response.code == 401){
        Message.error({
            message: '尚未登录，请登录'
        });
        router.replace("/")
    }else {
        if (error.response.data.message){
            Message.error({
                message: error.response.data.message
            })
        }else {
            Message.error({
                message: '未知错误'
            });
        }
    }
});

// 前置请求
let base = '';
// 封装请求
export  const postRequest = (url, params)=>{
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: params
    })
}
// 传送json的put请求
export const putRequest = (url, params)=>{
    return axios({
        method: 'put',
        url: `${base}${url}`,
        data: params
    });
}

// 传送json的get请求
export const getRequest = (url, params)=>{
    return axios({
        method: 'get',
        url: `${base}${url}`,
        data: params
    });
}
// 传送json的delete的请求
export const deleteRequest = (url, params)=>{
    return axios({
        method: 'delete',
        url: `${base}${url}`,
        data: params
    });
}

